|
|
@@ -29,9 +29,8 @@ module ActiveRecord::ConnectionAdapters
|
29
|
29
|
module CharsetSupport
|
30
|
30
|
def prepare_column_options(column, types)
|
31
|
31
|
spec = super
|
32
|
|
- conn = ActiveRecord::Base.connection
|
33
|
|
- spec[:charset] = column.charset.inspect if column.charset && column.charset != conn.charset
|
34
|
|
- spec[:collation] = column.collation.inspect if column.collation && column.collation != conn.collation
|
|
32
|
+ spec[:charset] = column.charset.inspect if column.charset && column.charset != charset
|
|
33
|
+ spec[:collation] = column.collation.inspect if column.collation && column.collation != collation
|
35
|
34
|
spec
|
36
|
35
|
end
|
37
|
36
|
|
|
|
@@ -67,9 +66,12 @@ module ActiveRecord::ConnectionAdapters
|
67
|
66
|
def create_database(name, options = {})
|
68
|
67
|
# utf8mb4 is used in column definitions; use utf8 for
|
69
|
68
|
# databases.
|
70
|
|
- if options[:charset] == 'utf8mb4'
|
71
|
|
- options = options.merge(charset: 'utf8')
|
72
|
|
- end
|
|
69
|
+ [:charset, :collation].each { |key|
|
|
70
|
+ case options[key]
|
|
71
|
+ when /\A(utf8mb4(_\w*)?)\z/
|
|
72
|
+ options = options.merge(key => "utf8#{$2}")
|
|
73
|
+ end
|
|
74
|
+ }
|
73
|
75
|
super(name, options)
|
74
|
76
|
end
|
75
|
77
|
end
|